package com.feng.zhihao.apigeteway.entity;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * InterfaceFieldInfo entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "INTERFACE_FIELD_INFO")

public class InterfaceFieldInfo implements java.io.Serializable {

	// Fields

	private String interfaceFieldId;
	private ModularInfo modularInfo;
	private InterfaceInfo interfaceInfo;
	private ProjectInfo projectInfo;
	private InterfaceFieldInfo interfaceFieldInfo;
	private String interfaceFieldName;
	private Integer interfaceFieldState;
	private String interfaceFieldType;
	private String interfaceFieldPosition;
	private Boolean interfaceFieldIsNull;
	private String interfaceFieldExplain;
	private String interfaceFieldFormatting;
	private Integer interfaceFieldSort;
	private Set<InterfaceCaseInfo> interfaceCaseInfos = new HashSet<InterfaceCaseInfo>(0);
	private Set<ProjectInfo> projectInfosForReqInterfaceSignFieldId = new HashSet<ProjectInfo>(0);
	private Set<ProjectInfo> projectInfosForResInterfaceSignFieldId = new HashSet<ProjectInfo>(0);
	private Set<ProjectInfo> projectInfosForChannelFieldId = new HashSet<ProjectInfo>(0);
	private Set<ProjectInfo> projectInfosForInterfaceCodeFieldId = new HashSet<ProjectInfo>(0);
	private Set<ProjectInfo> projectInfosForInterfaceMessageFieldId = new HashSet<ProjectInfo>(0);
	private Set<ProjectInfo> projectInfosForInterfaceFlowIdFieldId = new HashSet<ProjectInfo>(0);
	private Set<InterfaceFieldGenerationRule> interfaceFieldGenerationRules = new HashSet<InterfaceFieldGenerationRule>(
			0);
	private Set<InterfaceFieldInfo> interfaceFieldInfos = new HashSet<InterfaceFieldInfo>(0);
	private Set<FieldLimitInfo> fieldLimitInfos = new HashSet<FieldLimitInfo>(0);
	private Set<ProjectInfo> projectInfosForInterfaceIdentificationFieldId = new HashSet<ProjectInfo>(0);

	// Constructors

	/** default constructor */
	public InterfaceFieldInfo() {
	}

	/** minimal constructor */
	public InterfaceFieldInfo(String interfaceFieldId, String interfaceFieldName) {
		this.interfaceFieldId = interfaceFieldId;
		this.interfaceFieldName = interfaceFieldName;
	}

	/** full constructor */
	public InterfaceFieldInfo(String interfaceFieldId, ModularInfo modularInfo, InterfaceInfo interfaceInfo,
			ProjectInfo projectInfo, InterfaceFieldInfo interfaceFieldInfo, String interfaceFieldName,
			Integer interfaceFieldState, String interfaceFieldType, String interfaceFieldPosition,
			Boolean interfaceFieldIsNull, String interfaceFieldExplain, String interfaceFieldFormatting,
			Integer interfaceFieldSort, Set<InterfaceCaseInfo> interfaceCaseInfos,
			Set<ProjectInfo> projectInfosForReqInterfaceSignFieldId,
			Set<ProjectInfo> projectInfosForResInterfaceSignFieldId, Set<ProjectInfo> projectInfosForChannelFieldId,
			Set<ProjectInfo> projectInfosForInterfaceCodeFieldId,
			Set<ProjectInfo> projectInfosForInterfaceMessageFieldId,
			Set<ProjectInfo> projectInfosForInterfaceFlowIdFieldId,
			Set<InterfaceFieldGenerationRule> interfaceFieldGenerationRules,
			Set<InterfaceFieldInfo> interfaceFieldInfos, Set<FieldLimitInfo> fieldLimitInfos,
			Set<ProjectInfo> projectInfosForInterfaceIdentificationFieldId) {
		this.interfaceFieldId = interfaceFieldId;
		this.modularInfo = modularInfo;
		this.interfaceInfo = interfaceInfo;
		this.projectInfo = projectInfo;
		this.interfaceFieldInfo = interfaceFieldInfo;
		this.interfaceFieldName = interfaceFieldName;
		this.interfaceFieldState = interfaceFieldState;
		this.interfaceFieldType = interfaceFieldType;
		this.interfaceFieldPosition = interfaceFieldPosition;
		this.interfaceFieldIsNull = interfaceFieldIsNull;
		this.interfaceFieldExplain = interfaceFieldExplain;
		this.interfaceFieldFormatting = interfaceFieldFormatting;
		this.interfaceFieldSort = interfaceFieldSort;
		this.interfaceCaseInfos = interfaceCaseInfos;
		this.projectInfosForReqInterfaceSignFieldId = projectInfosForReqInterfaceSignFieldId;
		this.projectInfosForResInterfaceSignFieldId = projectInfosForResInterfaceSignFieldId;
		this.projectInfosForChannelFieldId = projectInfosForChannelFieldId;
		this.projectInfosForInterfaceCodeFieldId = projectInfosForInterfaceCodeFieldId;
		this.projectInfosForInterfaceMessageFieldId = projectInfosForInterfaceMessageFieldId;
		this.projectInfosForInterfaceFlowIdFieldId = projectInfosForInterfaceFlowIdFieldId;
		this.interfaceFieldGenerationRules = interfaceFieldGenerationRules;
		this.interfaceFieldInfos = interfaceFieldInfos;
		this.fieldLimitInfos = fieldLimitInfos;
		this.projectInfosForInterfaceIdentificationFieldId = projectInfosForInterfaceIdentificationFieldId;
	}

	// Property accessors
	@Id

	@Column(name = "INTERFACE_FIELD_ID", unique = true, nullable = false, length = 36)

	public String getInterfaceFieldId() {
		return this.interfaceFieldId;
	}

	public void setInterfaceFieldId(String interfaceFieldId) {
		this.interfaceFieldId = interfaceFieldId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "MODULAR_ID")

	public ModularInfo getModularInfo() {
		return this.modularInfo;
	}

	public void setModularInfo(ModularInfo modularInfo) {
		this.modularInfo = modularInfo;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "INTERFACE_ID")

	public InterfaceInfo getInterfaceInfo() {
		return this.interfaceInfo;
	}

	public void setInterfaceInfo(InterfaceInfo interfaceInfo) {
		this.interfaceInfo = interfaceInfo;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "PROJECT_ID")

	public ProjectInfo getProjectInfo() {
		return this.projectInfo;
	}

	public void setProjectInfo(ProjectInfo projectInfo) {
		this.projectInfo = projectInfo;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "PARENT_INTERFACE_FIELD_ID")

	public InterfaceFieldInfo getInterfaceFieldInfo() {
		return this.interfaceFieldInfo;
	}

	public void setInterfaceFieldInfo(InterfaceFieldInfo interfaceFieldInfo) {
		this.interfaceFieldInfo = interfaceFieldInfo;
	}

	@Column(name = "INTERFACE_FIELD_NAME", nullable = false, length = 512)

	public String getInterfaceFieldName() {
		return this.interfaceFieldName;
	}

	public void setInterfaceFieldName(String interfaceFieldName) {
		this.interfaceFieldName = interfaceFieldName;
	}

	@Column(name = "INTERFACE_FIELD_STATE")

	public Integer getInterfaceFieldState() {
		return this.interfaceFieldState;
	}

	public void setInterfaceFieldState(Integer interfaceFieldState) {
		this.interfaceFieldState = interfaceFieldState;
	}

	@Column(name = "INTERFACE_FIELD_TYPE", length = 36)

	public String getInterfaceFieldType() {
		return this.interfaceFieldType;
	}

	public void setInterfaceFieldType(String interfaceFieldType) {
		this.interfaceFieldType = interfaceFieldType;
	}

	@Column(name = "INTERFACE_FIELD_POSITION", length = 36)

	public String getInterfaceFieldPosition() {
		return this.interfaceFieldPosition;
	}

	public void setInterfaceFieldPosition(String interfaceFieldPosition) {
		this.interfaceFieldPosition = interfaceFieldPosition;
	}

	@Column(name = "INTERFACE_FIELD_IS_NULL")

	public Boolean getInterfaceFieldIsNull() {
		return this.interfaceFieldIsNull;
	}

	public void setInterfaceFieldIsNull(Boolean interfaceFieldIsNull) {
		this.interfaceFieldIsNull = interfaceFieldIsNull;
	}

	@Column(name = "INTERFACE_FIELD_EXPLAIN", length = 4096)

	public String getInterfaceFieldExplain() {
		return this.interfaceFieldExplain;
	}

	public void setInterfaceFieldExplain(String interfaceFieldExplain) {
		this.interfaceFieldExplain = interfaceFieldExplain;
	}

	@Column(name = "INTERFACE_FIELD_FORMATTING", length = 128)

	public String getInterfaceFieldFormatting() {
		return this.interfaceFieldFormatting;
	}

	public void setInterfaceFieldFormatting(String interfaceFieldFormatting) {
		this.interfaceFieldFormatting = interfaceFieldFormatting;
	}

	@Column(name = "INTERFACE_FIELD_SORT")

	public Integer getInterfaceFieldSort() {
		return this.interfaceFieldSort;
	}

	public void setInterfaceFieldSort(Integer interfaceFieldSort) {
		this.interfaceFieldSort = interfaceFieldSort;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfo")

	public Set<InterfaceCaseInfo> getInterfaceCaseInfos() {
		return this.interfaceCaseInfos;
	}

	public void setInterfaceCaseInfos(Set<InterfaceCaseInfo> interfaceCaseInfos) {
		this.interfaceCaseInfos = interfaceCaseInfos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByReqInterfaceSignFieldId")

	public Set<ProjectInfo> getProjectInfosForReqInterfaceSignFieldId() {
		return this.projectInfosForReqInterfaceSignFieldId;
	}

	public void setProjectInfosForReqInterfaceSignFieldId(Set<ProjectInfo> projectInfosForReqInterfaceSignFieldId) {
		this.projectInfosForReqInterfaceSignFieldId = projectInfosForReqInterfaceSignFieldId;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByResInterfaceSignFieldId")

	public Set<ProjectInfo> getProjectInfosForResInterfaceSignFieldId() {
		return this.projectInfosForResInterfaceSignFieldId;
	}

	public void setProjectInfosForResInterfaceSignFieldId(Set<ProjectInfo> projectInfosForResInterfaceSignFieldId) {
		this.projectInfosForResInterfaceSignFieldId = projectInfosForResInterfaceSignFieldId;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByChannelFieldId")

	public Set<ProjectInfo> getProjectInfosForChannelFieldId() {
		return this.projectInfosForChannelFieldId;
	}

	public void setProjectInfosForChannelFieldId(Set<ProjectInfo> projectInfosForChannelFieldId) {
		this.projectInfosForChannelFieldId = projectInfosForChannelFieldId;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByInterfaceCodeFieldId")

	public Set<ProjectInfo> getProjectInfosForInterfaceCodeFieldId() {
		return this.projectInfosForInterfaceCodeFieldId;
	}

	public void setProjectInfosForInterfaceCodeFieldId(Set<ProjectInfo> projectInfosForInterfaceCodeFieldId) {
		this.projectInfosForInterfaceCodeFieldId = projectInfosForInterfaceCodeFieldId;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByInterfaceMessageFieldId")

	public Set<ProjectInfo> getProjectInfosForInterfaceMessageFieldId() {
		return this.projectInfosForInterfaceMessageFieldId;
	}

	public void setProjectInfosForInterfaceMessageFieldId(Set<ProjectInfo> projectInfosForInterfaceMessageFieldId) {
		this.projectInfosForInterfaceMessageFieldId = projectInfosForInterfaceMessageFieldId;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByInterfaceFlowIdFieldId")

	public Set<ProjectInfo> getProjectInfosForInterfaceFlowIdFieldId() {
		return this.projectInfosForInterfaceFlowIdFieldId;
	}

	public void setProjectInfosForInterfaceFlowIdFieldId(Set<ProjectInfo> projectInfosForInterfaceFlowIdFieldId) {
		this.projectInfosForInterfaceFlowIdFieldId = projectInfosForInterfaceFlowIdFieldId;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfo")

	public Set<InterfaceFieldGenerationRule> getInterfaceFieldGenerationRules() {
		return this.interfaceFieldGenerationRules;
	}

	public void setInterfaceFieldGenerationRules(Set<InterfaceFieldGenerationRule> interfaceFieldGenerationRules) {
		this.interfaceFieldGenerationRules = interfaceFieldGenerationRules;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfo")

	public Set<InterfaceFieldInfo> getInterfaceFieldInfos() {
		return this.interfaceFieldInfos;
	}

	public void setInterfaceFieldInfos(Set<InterfaceFieldInfo> interfaceFieldInfos) {
		this.interfaceFieldInfos = interfaceFieldInfos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfo")

	public Set<FieldLimitInfo> getFieldLimitInfos() {
		return this.fieldLimitInfos;
	}

	public void setFieldLimitInfos(Set<FieldLimitInfo> fieldLimitInfos) {
		this.fieldLimitInfos = fieldLimitInfos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "interfaceFieldInfoByInterfaceIdentificationFieldId")

	public Set<ProjectInfo> getProjectInfosForInterfaceIdentificationFieldId() {
		return this.projectInfosForInterfaceIdentificationFieldId;
	}

	public void setProjectInfosForInterfaceIdentificationFieldId(
			Set<ProjectInfo> projectInfosForInterfaceIdentificationFieldId) {
		this.projectInfosForInterfaceIdentificationFieldId = projectInfosForInterfaceIdentificationFieldId;
	}

}